Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 54f3195e19986027e4f4c6ba47a9566ceec7b01c


Parents : 797df09
Author : Ivan <ivan@quad4.io>
Signature : Signature validation error
Date : 2026-04-08T15:33:14-05:00

docs: update README and docs

Changes
Diff

diff --git a/README.md b/README.md
index 361efe7f..a825a05c 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,7 @@ A extensively modified and feature-rich fork of Reticulum MeshChat by Liam Cottl
This project is independent from the original Reticulum MeshChat project and is not affiliated with it.
+- Website: [meshchatx.com](https://meshchatx.com)
- Source: [git.quad4.io/RNS-Things/MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)
- Official Mirror: [github.com/Sudo-Ivan/MeshChatX](https://github.com/Sudo-Ivan/MeshChatX) - Also used for Windows and MacOS builds for the moment.
- Releases: [git.quad4.io/RNS-Things/MeshChatX/releases](https://git.quad4.io/RNS-Things/MeshChatX/releases)
@@ -28,17 +29,6 @@ This project is independent from the original Reticulum MeshChat project and is
> [!WARNING]
> Legacy systems are not fully supported yet. Current baseline is Python `>=3.11` and Node `>=24`.
-## Demo And Screenshots
-
-<video src="https://strg.0rbitzer0.net/raw/62926a2a-0a9a-4f44-a5f6-000dd60deac1.mp4" controls="controls" style="max-width: 100%;"></video>
-
-### UI Previews
-
-![Phone](screenshots/phone.png)
-![Network Visualiser](screenshots/network-visualiser.png)
-![Archives](screenshots/archives.png)
-![Identities](screenshots/identities.png)
-
## Requirements
- Python `>=3.11` (from `pyproject.toml`)
@@ -124,7 +114,7 @@ Release wheels include the built web assets.
```bash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
-meshchat --headless
+meshchatx --headless
```
`pipx` is also supported:
@@ -145,12 +135,12 @@ pnpm install
pip install poetry
poetry install
pnpm run build-frontend
-poetry run meshchat --headless --host 127.0.0.1
+poetry run meshchatx --headless --host 127.0.0.1
```
## Run sandboxed (Linux)
-To run the native `meshchat` binary with extra filesystem isolation, you can use **Firejail** or **Bubblewrap** (`bwrap`) while keeping normal network access for Reticulum and the web UI. Full examples (pip/pipx, Poetry, USB serial notes) are in:
+To run the native `meshchatx` binary (alias: `meshchat`) with extra filesystem isolation, you can use **Firejail** or **Bubblewrap** (`bwrap`) while keeping normal network access for Reticulum and the web UI. Full examples (pip/pipx, Poetry, USB serial notes) are in:
- [`docs/meshchatx_linux_sandbox.md`](docs/meshchatx_linux_sandbox.md)

diff --git a/docs/meshchatx_linux_sandbox.md b/docs/meshchatx_linux_sandbox.md
index 528b39d4..fc30cdfe 100644
--- a/docs/meshchatx_linux_sandbox.md
+++ b/docs/meshchatx_linux_sandbox.md
@@ -1,10 +1,10 @@
# MeshChatX on Linux: Firejail and Bubblewrap
-This page shows how to run `meshchat` under **Firejail** or **Bubblewrap** (`bwrap`) on Linux. Use this when you install MeshChatX natively (wheel, package, or Poetry) and want an extra layer of filesystem and process isolation compared to running the binary directly.
+This page shows how to run **`meshchatx`** under **Firejail** or **Bubblewrap** (`bwrap`) on Linux. The legacy CLI name **`meshchat`** installs the same entry point and can be substituted in these examples. Use this when you install MeshChatX natively (wheel, package, or Poetry) and want an extra layer of filesystem and process isolation compared to running the binary directly.
These tools do **not** replace a full virtual machine or hardware-enforced boundary. They reduce exposure of your home directory and other paths the process can write to, when you configure them with tight whitelists or bind mounts.
-**Containers:** If you already run MeshChatX with Docker or Podman, that is a different isolation model; this document is aimed at **host-installed** `meshchat`.
+**Containers:** If you already run MeshChatX with Docker or Podman, that is a different isolation model; this document is aimed at **host-installed** `meshchatx` (or `meshchat`).
## Prerequisites
@@ -13,7 +13,7 @@ Install one or both from your distribution:
- **Firejail:** package name is usually `firejail`.
- **Bubblewrap:** package name is usually `bubblewrap`; the binary is `bwrap`.
-You need a working `meshchat` on your `PATH` (for example after `pipx install`, `pip install --user`, or a distro package).
+You need a working **`meshchatx`** on your `PATH` (for example after `pipx install`, `pip install --user`, or a distro package). The **`meshchat`** command is the same binary if both entry points are installed.
Pick a **dedicated data directory** for sandboxed runs so you do not mix permissions or policies with a non-sandboxed install. The examples below use:
@@ -31,7 +31,7 @@ Firejail applies a profile (or defaults) on top of your command. For MeshChatX y
- **Network** left available so Reticulum and the web UI can work (do not use `--net=none` unless you know you need it).
- **Writable** only your chosen data directory (and anything else the app truly needs).
-### Installed `meshchat` (pip, pipx, or system package)
+### Installed `meshchatx` (pip, pipx, or system package)
```bash
DATA="${XDG_DATA_HOME:-$HOME/.local/share}/meshchatx-sandbox"
@@ -39,7 +39,7 @@ mkdir -p "$DATA/storage" "$DATA/.reticulum"
firejail --quiet \
--whitelist="$DATA" \
- meshchat --headless --host 127.0.0.1 \
+ meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
@@ -48,7 +48,7 @@ If the default profile blocks something MeshChatX needs, you can start from a lo
```bash
firejail --noprofile --whitelist="$DATA" \
- meshchat --headless --host 127.0.0.1 \
+ meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
@@ -69,7 +69,7 @@ firejail --quiet \
--whitelist="$(pwd)" \
--whitelist="$VENV" \
--whitelist="$DATA" \
- poetry run meshchat --headless --host 127.0.0.1 \
+ poetry run meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
@@ -91,7 +91,7 @@ Use the device nodes your system actually exposes (`dmesg`, `ls /dev/tty*`).
Bubblewrap does not ship profiles; you list every mount and option. The pattern below keeps the **whole root filesystem read-only**, mounts a **writable tmpfs** on `/tmp`, and makes **only** your data directory writable at its normal path. **Network namespaces are not changed**, so Reticulum and TCP/UDP behave like an unsandboxed process unless you add `--unshare-net` (which usually breaks mesh networking).
-### Installed `meshchat`
+### Installed `meshchatx`
```bash
DATA="${XDG_DATA_HOME:-$HOME/.local/share}/meshchatx-sandbox"
@@ -106,14 +106,14 @@ exec bwrap \
--tmpfs /tmp \
--bind "$DATA" "$DATA" \
--uid "$(id -u)" --gid "$(id -g)" \
- meshchat --headless --host 127.0.0.1 \
+ meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
Notes:
-- If `meshchat` lives only inside a venv that is **not** under `$DATA`, the read-only root still allows **reading** that path; you do not have to bind-mount the venv separately unless you also need writes there.
+- If `meshchatx` lives only inside a venv that is **not** under `$DATA`, the read-only root still allows **reading** that path; you do not have to bind-mount the venv separately unless you also need writes there.
- Distributions that merge `/` and `/usr` (merged-usr) still work with `--ro-bind / /` on typical glibc setups. If `bwrap` fails with missing library paths, add the extra `--ro-bind` lines your distro documents (for example `/lib64`).
### From source with Poetry
@@ -140,7 +140,7 @@ exec bwrap \
--uid "$(id -u)" --gid "$(id -g)" \
--setenv PATH "$VENV/bin:$PATH" \
--chdir "$PROJ" \
- poetry run meshchat --headless --host 127.0.0.1 \
+ poetry run meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
@@ -152,12 +152,12 @@ exec bwrap \
... same mounts as above ... \
--setenv PATH "$VENV/bin:$PATH" \
--chdir "$PROJ" \
- meshchat --headless --host 127.0.0.1 \
+ meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
-(Use the `meshchat` script or `python -m` entry point from `$VENV/bin` if your install exposes it there.)
+(Use the `meshchatx` script, the legacy `meshchat` alias, or `python -m` entry point from `$VENV/bin` if your install exposes it there.)
### USB serial under Bubblewrap

diff --git a/docs/meshchatx_on_android_with_termux.md b/docs/meshchatx_on_android_with_termux.md
index f2a9a411..3a9ec4be 100644
--- a/docs/meshchatx_on_android_with_termux.md
+++ b/docs/meshchatx_on_android_with_termux.md
@@ -31,9 +31,11 @@ The wheel will automatically install all Python dependencies. Building `cryptogr
### Run MeshChatX
```
-meshchat
+meshchatx
```
+(`meshchat` is a compatibility alias for the same entry point.)
+
Then open your Android web browser and navigate to `http://localhost:8000`
## Method 2: Install from Source
@@ -75,9 +77,11 @@ pip install dist/*.whl
### Run MeshChatX
```
-meshchat
+meshchatx
```
+(`meshchat` is a compatibility alias for the same entry point.)
+
## Configuration Notes
> Note: The default `AutoInterface` may not work on your Android device. You will need to configure another interface such as `TCPClientInterface` in the settings.

diff --git a/lang/README.de.md b/lang/README.de.md
index 0dd1952f..eddb1689 100644
--- a/lang/README.de.md
+++ b/lang/README.de.md
@@ -1,19 +1,27 @@
# Reticulum MeshChatX
+[English README](../README.md) | [Русский](README.ru.md) | [Italiano](README.it.md) | [中文](README.zh.md) | [日本語](README.ja.md)
+
Ein umfassend modifizierter und funktionsreicher Fork von Reticulum MeshChat von Liam Cottle.
Dieses Projekt ist unabhaengig vom originalen Reticulum MeshChat und steht in keiner Verbindung dazu.
+- Website: [meshchatx.com](https://meshchatx.com)
- Quellcode: [git.quad4.io/RNS-Things/MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)
+- Offizieller Spiegel: [github.com/Sudo-Ivan/MeshChatX](https://github.com/Sudo-Ivan/MeshChatX) – derzeit auch fuer Windows- und macOS-Builds genutzt.
- Releases: [git.quad4.io/RNS-Things/MeshChatX/releases](https://git.quad4.io/RNS-Things/MeshChatX/releases)
- Aenderungsprotokoll: [`CHANGELOG.md`](../CHANGELOG.md)
-- TODO: [`TODO.md`](../TODO.md)
-- [English README](../README.md) | [Русский](README.ru.md) | [Italiano](README.it.md) | [中文](README.zh.md) | [日本語](README.ja.md)
+- TODO: [Boards](https://git.quad4.io/RNS-Things/MeshChatX/projects)
-## Wichtige Hinweise
+## Wichtige Aenderungen gegenueber Reticulum MeshChat
-- Volle LXMF-Unterstuetzung ist ein zentrales Projektziel.
-- Datenspeicherung und Migrationen werden schrittweise auf reines SQL umgestellt (Ersatz alter Peewee-ORM-Pfade).
+- Verwendet LXST
+- Peewee-ORM durch direktes SQL ersetzt
+- Axios durch natives `fetch` ersetzt
+- Aktuelles Electron
+- `.whl`-Pakete mit Webserver und eingebauten Frontend-Assets fuer mehr Deploy-Optionen
+- i18n
+- PNPM und Poetry fuer Abhaengigkeiten
> [!WARNING]
> MeshChatX garantiert keine Datenkompatibilitaet mit aelteren Reticulum-MeshChat-Versionen. Erstellen Sie vor Migration oder Tests eine Datensicherung.
@@ -21,17 +29,6 @@ Dieses Projekt ist unabhaengig vom originalen Reticulum MeshChat und steht in ke
> [!WARNING]
> Aeltere Systeme werden noch nicht vollstaendig unterstuetzt. Aktuelle Mindestanforderungen: Python `>=3.11` und Node `>=24`.
-## Demo und Screenshots
-
-<video src="https://strg.0rbitzer0.net/raw/62926a2a-0a9a-4f44-a5f6-000dd60deac1.mp4" controls="controls" style="max-width: 100%;"></video>
-
-### Oberflaeche
-
-![Telefon](../screenshots/phone.png)
-![Netzwerkvisualisierung](../screenshots/network-visualiser.png)
-![Archive](../screenshots/archives.png)
-![Identitaeten](../screenshots/identities.png)
-
## Voraussetzungen
- Python `>=3.11` (aus `pyproject.toml`)
@@ -39,8 +36,17 @@ Dieses Projekt ist unabhaengig vom originalen Reticulum MeshChat und steht in ke
- pnpm `10.32.1` (aus `package.json`)
- Poetry (verwendet in `Taskfile.yml` und CI-Workflows)
+```bash
+task install
+task lint:all
+task test:all
+task build:all
+```
+
## Installationsmethoden
+Waehlen Sie die Methode passend zu Umgebung und Paketierung.
+
| Methode | Frontend enthalten | Architekturen | Geeignet fuer |
| --------------------- | ------------------ | ------------------------------------- | ----------------------------------- |
| Docker-Image | Ja | `linux/amd64`, `linux/arm64` | Schnellster Start auf Linux-Servern |
@@ -108,7 +114,7 @@ Release-Wheels enthalten die gebauten Web-Assets.
```bash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
-meshchat --headless
+meshchatx --headless
```
`pipx` wird ebenfalls unterstuetzt:
@@ -119,6 +125,8 @@ pipx install ./reticulum_meshchatx-*-py3-none-any.whl
## Aus Quellcode ausfuehren (Webserver-Modus)
+Fuer Entwicklung oder lokale Custom-Builds.
+
```bash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
cd MeshChatX
@@ -127,12 +135,12 @@ pnpm install
pip install poetry
poetry install
pnpm run build-frontend
-poetry run meshchat --headless --host 127.0.0.1
+poetry run meshchatx --headless --host 127.0.0.1
```
## Sandboxing (Linux)
-Um das native `meshchat`-Programm mit zusaetzlicher Dateisystem-Isolation auszufuehren, koennen Sie **Firejail** oder **Bubblewrap** (`bwrap`) nutzen, bei weiterhin normalem Netzwerkzugriff fuer Reticulum und die Web-Oberflaeche. Vollstaendige Beispiele (pip/pipx, Poetry, Hinweise zu USB-Seriell) finden Sie in:
+Um das native `meshchatx`-Programm (Alias: `meshchat`) mit zusaetzlicher Dateisystem-Isolation auszufuehren, koennen Sie **Firejail** oder **Bubblewrap** (`bwrap`) nutzen, bei weiterhin normalem Netzwerkzugriff fuer Reticulum und die Web-Oberflaeche. Vollstaendige Beispiele (pip/pipx, Poetry, Hinweise zu USB-Seriell) finden Sie in:
- [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)
@@ -140,6 +148,8 @@ Dieselbe Seite erscheint in der in-app-**Dokumentation** (MeshChatX-Docs), wenn
## Desktop-Pakete aus Quellcode bauen
+Diese Skripte sind in `package.json` und `Taskfile.yml` definiert.
+
### Linux x64 AppImage + DEB
```bash
@@ -158,13 +168,19 @@ pnpm run dist:linux-arm64
pnpm run dist:rpm
```
+Oder ueber Task:
+
+```bash
+task dist:fe:rpm
+```
+
## Architekturunterstuetzung
- Docker: `amd64`, `arm64`
- Linux AppImage: `x64`, `arm64`
- Linux DEB: `x64`, `arm64`
- Windows: `x64`, `arm64` (Build-Skripte vorhanden)
-- macOS: Build-Skripte vorhanden (`arm64`, `universal`)
+- macOS: Build-Skripte vorhanden (`arm64`, `universal`) fuer lokale Build-Umgebungen
- Android: Projekt und CI-Workflow im Repository enthalten
## Android
@@ -174,15 +190,16 @@ pnpm run dist:rpm
## Konfiguration
-| Argument | Umgebungsvariable | Standard | Beschreibung |
-| --------------- | ---------------------- | ----------- | ---------------------------------- |
-| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Webserver-Adresse |
-| `--port` | `MESHCHAT_PORT` | `8000` | Webserver-Port |
-| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | HTTPS deaktivieren |
-| `--headless` | `MESHCHAT_HEADLESS` | `false` | Browser nicht automatisch oeffnen |
-| `--auth` | `MESHCHAT_AUTH` | `false` | Basis-Authentifizierung aktivieren |
-| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Datenverzeichnis |
-| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto | Frontend-Verzeichnis |
+| Argument | Umgebungsvariable | Standard | Beschreibung |
+| -------------------------- | ---------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
+| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Webserver-Bind-Adresse |
+| `--port` | `MESHCHAT_PORT` | `8000` | Webserver-Port |
+| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | HTTPS deaktivieren |
+| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (keine) | PEM-Zertifikat und Schluessel; beide setzen. Ueberschreibt automatisch erzeugte Zertifikate unter der Identitaet im Verzeichnis `ssl/`. |
+| `--headless` | `MESHCHAT_HEADLESS` | `false` | Browser nicht automatisch oeffnen |
+| `--auth` | `MESHCHAT_AUTH` | `false` | Basis-Authentifizierung aktivieren |
+| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Datenverzeichnis |
+| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto/bundled | Frontend-Verzeichnis (fuer Installationen ohne gebundelte Assets) |
## Branches
@@ -193,6 +210,8 @@ pnpm run dist:rpm
## Entwicklung
+Gaengige Aufgaben aus `Taskfile.yml`:
+
```bash
task install
task lint:all
@@ -200,38 +219,64 @@ task test:all
task build:all
```
+`Makefile`-Kurzformen:
+
+| Befehl | Beschreibung |
+| -------------- | ------------------------------------------------- |
+| `make install` | pnpm- und Poetry-Abhaengigkeiten installieren |
+| `make run` | MeshChatX ueber Poetry starten |
+| `make build` | Frontend bauen |
+| `make lint` | eslint und ruff ausfuehren |
+| `make test` | Frontend- und Backend-Tests |
+| `make clean` | Build-Artefakte und node_modules entfernen |
+
+## Versionierung
+
+Aktuelle Version in diesem Repository: `4.4.0`.
+
+- `package.json` ist die Quelle fuer die JavaScript/Electron-Version.
+- `meshchatx/src/version.py` wird aus `package.json` synchronisiert mit:
+
+```bash
+pnpm run version:sync
+```
+
+Fuer konsistente Releases die Versionsfelder dort abgleichen, wo noetig (`package.json`, `pyproject.toml`, `meshchatx/__init__.py`).
+
## Sicherheit
- [`SECURITY.md`](../SECURITY.md)
-- Integrierte Integritaetspruefungen und HTTPS/WSS-Standardeinstellungen
+- Integrierte Integritaetspruefungen und HTTPS/WSS-Standardeinstellungen in der App
- CI-Scanning-Workflows in `.gitea/workflows/`
## Sprache hinzufuegen
Die Spracherkennung erfolgt automatisch. Um eine neue Sprache hinzuzufuegen, genuegt eine einzige JSON-Datei:
-1. Vorlage aus `en.json` generieren:
+1. Leere Vorlage aus `en.json` erzeugen:
```bash
python scripts/generate_locale_template.py
```
-2. Datei umbenennen und in das Locale-Verzeichnis verschieben:
+Damit wird `locales.json` mit leeren Strings fuer alle Schluessel geschrieben.
+
+2. Umbenennen und in das Locale-Verzeichnis verschieben:
```bash
mv locales.json meshchatx/src/frontend/locales/xx.json
```
-3. `_languageName` am Anfang der Datei auf den nativen Sprachnamen setzen (z.B. `"Espanol"`, `"Francais"`).
+3. `_languageName` am Anfang der Datei auf den nativen Sprachnamen setzen (z.B. `"Espanol"`, `"Francais"`). Wird im Sprachwahlmenue angezeigt.
4. Alle uebrigen Werte uebersetzen.
5. Schluesselparitaet pruefen: `pnpm test -- tests/frontend/i18n.test.js --run`
-Keine weiteren Code-Aenderungen noetig.
+Keine weiteren Code-Aenderungen noetig. App, Sprachwahl und Tests lesen Locales zur Build-Zeit aus `meshchatx/src/frontend/locales/`.
## Mitwirkende
- [Liam Cottle](https://github.com/liamcottle) - Originales Reticulum MeshChat
-- [RFnexus](https://github.com/RFnexus) - JavaScript-Micron-Parser
+- [RFnexus](https://github.com/RFnexus) - Micron-Parser (JavaScript)
- [markqvist](https://github.com/markqvist) - Reticulum, LXMF, LXST

diff --git a/lang/README.it.md b/lang/README.it.md
index 23e596dc..980690ba 100644
--- a/lang/README.it.md
+++ b/lang/README.it.md
@@ -1,19 +1,27 @@
# Reticulum MeshChatX
+[English README](../README.md) | [Deutsch](README.de.md) | [Русский](README.ru.md) | [中文](README.zh.md) | [日本語](README.ja.md)
+
Un fork ampiamente modificato e ricco di funzionalita di Reticulum MeshChat di Liam Cottle.
Questo progetto e indipendente dal progetto originale Reticulum MeshChat e non e affiliato ad esso.
+- Sito web: [meshchatx.com](https://meshchatx.com)
- Codice sorgente: [git.quad4.io/RNS-Things/MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)
+- Mirror ufficiale: [github.com/Sudo-Ivan/MeshChatX](https://github.com/Sudo-Ivan/MeshChatX) — usato anche per le build Windows e macOS al momento.
- Release: [git.quad4.io/RNS-Things/MeshChatX/releases](https://git.quad4.io/RNS-Things/MeshChatX/releases)
- Changelog: [`CHANGELOG.md`](../CHANGELOG.md)
-- TODO: [`TODO.md`](../TODO.md)
-- [English README](../README.md) | [Deutsch](README.de.md) | [Русский](README.ru.md) | [中文](README.zh.md) | [日本語](README.ja.md)
+- TODO: [Boards](https://git.quad4.io/RNS-Things/MeshChatX/projects)
-## Note importanti
+## Modifiche importanti rispetto a Reticulum MeshChat
-- Il supporto completo LXMF e un obiettivo centrale del progetto.
-- L'archiviazione e le migrazioni sono state progressivamente rielaborate verso SQL diretto (sostituendo i percorsi legacy Peewee ORM).
+- Usa LXST
+- Peewee ORM sostituito con SQL diretto
+- Axios sostituito con `fetch` nativo
+- Electron aggiornato
+- Wheel `.whl` con web server e asset frontend integrati per piu opzioni di deploy
+- i18n
+- PNPM e Poetry per le dipendenze
> [!WARNING]
> MeshChatX non garantisce la compatibilita dei dati con le versioni precedenti di Reticulum MeshChat. Eseguire un backup prima della migrazione o dei test.
@@ -21,17 +29,6 @@ Questo progetto e indipendente dal progetto originale Reticulum MeshChat e non e
> [!WARNING]
> I sistemi legacy non sono ancora completamente supportati. Requisiti minimi attuali: Python `>=3.11` e Node `>=24`.
-## Demo e screenshot
-
-<video src="https://strg.0rbitzer0.net/raw/62926a2a-0a9a-4f44-a5f6-000dd60deac1.mp4" controls="controls" style="max-width: 100%;"></video>
-
-### Interfaccia
-
-![Telefono](../screenshots/phone.png)
-![Visualizzatore di rete](../screenshots/network-visualiser.png)
-![Archivi](../screenshots/archives.png)
-![Identita](../screenshots/identities.png)
-
## Requisiti
- Python `>=3.11` (da `pyproject.toml`)
@@ -39,8 +36,17 @@ Questo progetto e indipendente dal progetto originale Reticulum MeshChat e non e
- pnpm `10.32.1` (da `package.json`)
- Poetry (utilizzato in `Taskfile.yml` e nei workflow CI)
+```bash
+task install
+task lint:all
+task test:all
+task build:all
+```
+
## Metodi di installazione
+Scegli il metodo in base all'ambiente e al formato del pacchetto.
+
| Metodo | Include frontend | Architetture | Ideale per |
| ------------------------- | -------------------- | ------------------------------------------- | -------------------------------------------------- |
| Immagine Docker | Si | `linux/amd64`, `linux/arm64` | Avvio rapido su server Linux |
@@ -108,7 +114,7 @@ I wheel delle release includono gli asset web compilati.
```bash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
-meshchat --headless
+meshchatx --headless
```
`pipx` e supportato:
@@ -119,6 +125,8 @@ pipx install ./reticulum_meshchatx-*-py3-none-any.whl
## Esecuzione da sorgente (modalita web server)
+Per sviluppo o build locali personalizzate.
+
```bash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
cd MeshChatX
@@ -127,12 +135,12 @@ pnpm install
pip install poetry
poetry install
pnpm run build-frontend
-poetry run meshchat --headless --host 127.0.0.1
+poetry run meshchatx --headless --host 127.0.0.1
```
## Esecuzione in sandbox (Linux)
-Per eseguire il binario nativo `meshchat` con isolamento aggiuntivo del filesystem, puoi usare **Firejail** o **Bubblewrap** (`bwrap`) mantenendo l'accesso di rete normale per Reticulum e l'interfaccia web. Esempi completi (pip/pipx, Poetry, note sulla seriale USB) sono in:
+Per eseguire il binario nativo `meshchatx` (alias: `meshchat`) con isolamento aggiuntivo del filesystem, puoi usare **Firejail** o **Bubblewrap** (`bwrap`) mantenendo l'accesso di rete normale per Reticulum e l'interfaccia web. Esempi completi (pip/pipx, Poetry, note sulla seriale USB) sono in:
- [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)
@@ -140,6 +148,8 @@ La stessa pagina compare nell'elenco **Documentazione** in-app (documentazione M
## Compilazione pacchetti desktop da sorgente
+Gli script sono definiti in `package.json` e `Taskfile.yml`.
+
### Linux x64 AppImage + DEB
```bash
@@ -158,13 +168,19 @@ pnpm run dist:linux-arm64
pnpm run dist:rpm
```
+Oppure tramite Task:
+
+```bash
+task dist:fe:rpm
+```
+
## Supporto architetture
- Docker: `amd64`, `arm64`
- Linux AppImage: `x64`, `arm64`
- Linux DEB: `x64`, `arm64`
- Windows: `x64`, `arm64` (script di build disponibili)
-- macOS: script di build disponibili (`arm64`, `universal`)
+- macOS: script di build disponibili (`arm64`, `universal`) per ambienti di build locali
- Android: progetto e workflow CI presenti nel repository
## Android
@@ -174,15 +190,16 @@ pnpm run dist:rpm
## Configurazione
-| Argomento | Variabile d'ambiente | Predefinito | Descrizione |
-| --------------- | ---------------------- | ----------- | ------------------------------------- |
-| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Indirizzo del web server |
-| `--port` | `MESHCHAT_PORT` | `8000` | Porta del web server |
-| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | Disattiva HTTPS |
-| `--headless` | `MESHCHAT_HEADLESS` | `false` | Non aprire il browser automaticamente |
-| `--auth` | `MESHCHAT_AUTH` | `false` | Attiva autenticazione base |
-| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Directory dei dati |
-| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto | Directory dei file frontend |
+| Argomento | Variabile d'ambiente | Predefinito | Descrizione |
+| -------------------------- | ---------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Indirizzo di bind del web server |
+| `--port` | `MESHCHAT_PORT` | `8000` | Porta del web server |
+| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | Disattiva HTTPS |
+| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (nessuno) | Percorsi PEM certificato e chiave; impostare entrambi. Sostituisce i certificati auto-generati sotto l'identita nella directory `ssl/`. |
+| `--headless` | `MESHCHAT_HEADLESS` | `false` | Non aprire il browser automaticamente |
+| `--auth` | `MESHCHAT_AUTH` | `false` | Attiva autenticazione base |
+| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Directory dei dati |
+| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto/bundle | Directory dei file frontend (per installazioni senza asset inclusi) |
## Branch
@@ -193,6 +210,8 @@ pnpm run dist:rpm
## Sviluppo
+Attivita comuni da `Taskfile.yml`:
+
```bash
task install
task lint:all
@@ -200,38 +219,64 @@ task test:all
task build:all
```
+Scorciatoie `Makefile`:
+
+| Comando | Descrizione |
+| -------------- | ------------------------------------------------ |
+| `make install` | Installa dipendenze pnpm e poetry |
+| `make run` | Esegue MeshChatX tramite poetry |
+| `make build` | Compila il frontend |
+| `make lint` | Esegue eslint e ruff |
+| `make test` | Test frontend e backend |
+| `make clean` | Rimuove artefatti di build e node_modules |
+
+## Versioning
+
+Versione attuale nel repository: `4.4.0`.
+
+- La fonte della versione JavaScript/Electron e `package.json`.
+- `meshchatx/src/version.py` e sincronizzato da `package.json` con:
+
+```bash
+pnpm run version:sync
+```
+
+Per release coerenti, allineare i campi di versione dove richiesto (`package.json`, `pyproject.toml`, `meshchatx/__init__.py`).
+
## Sicurezza
- [`SECURITY.md`](../SECURITY.md)
-- Controlli di integrita integrati e HTTPS/WSS predefiniti
+- Controlli di integrita integrati e HTTPS/WSS predefiniti nell'app
- Workflow di scansione CI in `.gitea/workflows/`
## Aggiungere una lingua
Il rilevamento delle lingue e automatico. Per aggiungere una nuova lingua basta un singolo file JSON:
-1. Generare un modello da `en.json`:
+1. Generare un modello vuoto da `en.json`:
```bash
python scripts/generate_locale_template.py
```
+Scrive `locales.json` con ogni chiave impostata a stringa vuota.
+
2. Rinominare e spostare nella cartella delle lingue:
```bash
mv locales.json meshchatx/src/frontend/locales/xx.json
```
-3. Impostare `_languageName` all'inizio del file con il nome nativo della lingua (es. `"Espanol"`, `"Francais"`).
+3. Impostare `_languageName` all'inizio del file con il nome nativo della lingua (es. `"Espanol"`, `"Francais"`). Viene mostrato nel selettore lingua.
4. Tradurre tutti i valori rimanenti.
5. Verificare la corrispondenza delle chiavi: `pnpm test -- tests/frontend/i18n.test.js --run`
-Nessuna altra modifica al codice necessaria.
+Nessun altra modifica al codice e necessaria. App, selettore lingua e test scoprono le lingue in `meshchatx/src/frontend/locales/` al momento della build.
## Crediti
- [Liam Cottle](https://github.com/liamcottle) - Reticulum MeshChat originale
-- [RFnexus](https://github.com/RFnexus) - Parser Micron JavaScript
+- [RFnexus](https://github.com/RFnexus) - Parser Micron (JavaScript)
- [markqvist](https://github.com/markqvist) - Reticulum, LXMF, LXST

diff --git a/lang/README.ja.md b/lang/README.ja.md
index 68d1971f..1bec660b 100644
--- a/lang/README.ja.md
+++ b/lang/README.ja.md
@@ -1,19 +1,27 @@
# Reticulum MeshChatX
+[English README](../README.md) | [Deutsch](README.de.md) | [Italiano](README.it.md) | [Русский](README.ru.md) | [中文](README.zh.md)
+
Liam Cottle 氏による Reticulum MeshChat を大幅に改修・機能拡張したフォークです。
本プロジェクトはオリジナルの Reticulum MeshChat とは独立しており、提携関係にありません。
+- ウェブサイト: [meshchatx.com](https://meshchatx.com)
- ソースコード: [git.quad4.io/RNS-Things/MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)
+- 公式ミラー: [github.com/Sudo-Ivan/MeshChatX](https://github.com/Sudo-Ivan/MeshChatX) — 現時点では Windows / macOS ビルドにも使用。
- リリース: [git.quad4.io/RNS-Things/MeshChatX/releases](https://git.quad4.io/RNS-Things/MeshChatX/releases)
- 変更履歴: [`CHANGELOG.md`](../CHANGELOG.md)
-- TODO: [`TODO.md`](../TODO.md)
-- [English README](../README.md) | [Deutsch](README.de.md) | [Italiano](README.it.md) | [Русский](README.ru.md) | [中文](README.zh.md)
+- TODO: [Boards](https://git.quad4.io/RNS-Things/MeshChatX/projects)
-## 重要事項
+## Reticulum MeshChat からの主な変更
-- LXMF の完全サポートがプロジェクトの中核目標です。
-- データ保存とマイグレーションは段階的に直接 SQL へ移行中です(レガシーの Peewee ORM パスを置換)。
+- LXST を使用
+- Peewee ORM を生 SQL に置き換え
+- Axios をネイティブ `fetch` に置き換え
+- 最新の Electron
+- Web サーバーと同梱フロントエンドを含む `.whl` によりデプロイの選択肢を拡張
+- i18n
+- 依存関係管理に PNPM と Poetry
> [!WARNING]
> MeshChatX は旧バージョンの Reticulum MeshChat とのデータ互換性を保証しません。マイグレーションやテスト前にデータをバックアップしてください。
@@ -21,17 +29,6 @@ Liam Cottle 氏による Reticulum MeshChat を大幅に改修・機能拡張し
> [!WARNING]
> レガシーシステムはまだ完全にはサポートされていません。現在の最低要件: Python `>=3.11`、Node `>=24`。
-## デモとスクリーンショット
-
-<video src="https://strg.0rbitzer0.net/raw/62926a2a-0a9a-4f44-a5f6-000dd60deac1.mp4" controls="controls" style="max-width: 100%;"></video>
-
-### UI プレビュー
-
-![電話](../screenshots/phone.png)
-![ネットワークビジュアライザ](../screenshots/network-visualiser.png)
-![アーカイブ](../screenshots/archives.png)
-![アイデンティティ](../screenshots/identities.png)
-
## 必要条件
- Python `>=3.11`(`pyproject.toml` より)
@@ -39,11 +36,20 @@ Liam Cottle 氏による Reticulum MeshChat を大幅に改修・機能拡張し
- pnpm `10.32.1`(`package.json` より)
- Poetry(`Taskfile.yml` および CI ワークフローで使用)
+```bash
+task install
+task lint:all
+task test:all
+task build:all
+```
+
## インストール方法
+環境とパッケージ形式に合わせて選んでください。
+
| 方法 | フロントエンド含む | アーキテクチャ | 最適な用途 |
| -------------------------- | ------------------ | ------------------------------------- | ---------------------------------------- |
-| Docker イメージ | はい | `linux/amd64`, `linux/arm64` | Linux サーバーでの最速セットアップ |
+| Docker イメージ | はい | `linux/amd64`, `linux/arm64` | Linux サーバーでの迅速なセットアップ |
| Python wheel (`.whl`) | はい | Python がサポートする全アーキテクチャ | Node ビルド不要のヘッドレス/Web サーバー |
| Linux AppImage | はい | `x64`, `arm64` | ポータブルデスクトップ |
| Debian パッケージ (`.deb`) | はい | `x64`, `arm64` | Debian/Ubuntu |
@@ -53,7 +59,7 @@ Liam Cottle 氏による Reticulum MeshChat を大幅に改修・機能拡張し
備考:
- リリースワークフローは Linux `x64` および `arm64` の AppImage + DEB を明示的にビルドします。
-- RPM もビルドが試みられ、成功時にアップロードされます。
+- RPM も試行され、成功時にアップロードされます。
## クイックスタート: Docker
@@ -64,7 +70,7 @@ docker compose up -d
デフォルトの compose ファイル:
- ホスト `127.0.0.1:8000` -> コンテナポート `8000`
-- `./meshchat-config` -> `/config`(永続化用)
+- `./meshchat-config` -> `/config`(永続化)
権限エラーが発生した場合:
@@ -104,11 +110,11 @@ sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
### 4) Python wheel (`.whl`)
-リリースの wheel にはビルド済みの Web アセットが含まれています。
+リリースの wheel にはビルド済みの Web アセットが含まれます。
```bash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
-meshchat --headless
+meshchatx --headless
```
`pipx` もサポート:
@@ -119,6 +125,8 @@ pipx install ./reticulum_meshchatx-*-py3-none-any.whl
## ソースからの実行(Web サーバーモード)
+開発時やローカルのカスタムビルド向け。
+
```bash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
cd MeshChatX
@@ -127,19 +135,21 @@ pnpm install
pip install poetry
poetry install
pnpm run build-frontend
-poetry run meshchat --headless --host 127.0.0.1
+poetry run meshchatx --headless --host 127.0.0.1
```
## サンドボックスで実行(Linux)
-ネイティブの `meshchat` バイナリを、ファイルシステムをより隔離した状態で動かすには、Reticulum と Web UI 向けの通常のネットワークアクセスを保ちつつ **Firejail** または **Bubblewrap**(`bwrap`)を使えます。詳しい例(pip/pipx、Poetry、USB シリアルの注意)は次を参照してください。
+ネイティブの `meshchatx`(エイリアス: `meshchat`)をファイルシステムをより隔離した状態で動かすには、Reticulum と Web UI 向けの通常のネットワークアクセスを保ちつつ **Firejail** または **Bubblewrap**(`bwrap`)を使えます。詳しい例(pip/pipx、Poetry、USB シリアルの注意)は次を参照:
- [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)
-同じページは、同梱または同期された `meshchatx-docs` から配信される場合、アプリ内の **ドキュメント**(MeshChatX ドキュメント)一覧にも表示されます。
+同梱または同期された `meshchatx-docs` から配信される場合、アプリ内の **ドキュメント**(MeshChatX ドキュメント)一覧にも同じページが表示されます。
## ソースからのデスクトップパッケージビルド
+スクリプトは `package.json` と `Taskfile.yml` に定義されています。
+
### Linux x64 AppImage + DEB
```bash
@@ -158,13 +168,19 @@ pnpm run dist:linux-arm64
pnpm run dist:rpm
```
+Task 経由:
+
+```bash
+task dist:fe:rpm
+```
+
## アーキテクチャサポート
- Docker: `amd64`, `arm64`
- Linux AppImage: `x64`, `arm64`
- Linux DEB: `x64`, `arm64`
- Windows: `x64`, `arm64`(ビルドスクリプトあり)
-- macOS: ビルドスクリプトあり(`arm64`, `universal`)
+- macOS: ローカルビルド向けにビルドスクリプトあり(`arm64`, `universal`)
- Android: リポジトリにプロジェクトと CI ワークフローあり
## Android
@@ -174,25 +190,28 @@ pnpm run dist:rpm
## 設定
-| 引数 | 環境変数 | デフォルト | 説明 |
-| --------------- | ---------------------- | ----------- | ---------------------------------- |
-| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Web サーバーバインドアドレス |
-| `--port` | `MESHCHAT_PORT` | `8000` | Web サーバーポート |
-| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | HTTPS を無効化 |
-| `--headless` | `MESHCHAT_HEADLESS` | `false` | ブラウザを自動で開かない |
-| `--auth` | `MESHCHAT_AUTH` | `false` | 基本認証を有効化 |
-| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | データディレクトリ |
-| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | 自動 | フロントエンドファイルディレクトリ |
+| 引数 | 環境変数 | デフォルト | 説明 |
+| -------------------------- | ---------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------ |
+| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Web サーバーのバインドアドレス |
+| `--port` | `MESHCHAT_PORT` | `8000` | Web サーバーポート |
+| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | HTTPS を無効化 |
+| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (なし) | PEM 証明書と鍵のパス。両方指定。アイデンティティの `ssl/` 下の自動生成証明書を上書き。 |
+| `--headless` | `MESHCHAT_HEADLESS` | `false` | ブラウザを自動で開かない |
+| `--auth` | `MESHCHAT_AUTH` | `false` | 基本認証を有効化 |
+| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | データディレクトリ |
+| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | 自動/同梱 | フロントエンドファイルディレクトリ(同梱資産のないインストール向け) |
## ブランチ
| ブランチ | 目的 |
| -------- | ------------------------------------------------------------ |
-| `master` | 安定版リリース。本番環境対応コードのみ。 |
-| `dev` | 活発な開発中。不安定または不完全な変更を含む場合があります。 |
+| `master` | 安定版リリース。本番向けのコードのみ。 |
+| `dev` | 活発な開発。不安定または不完全な変更を含む場合があります。 |
## 開発
+`Taskfile.yml` のよく使うタスク:
+
```bash
task install
task lint:all
@@ -200,38 +219,64 @@ task test:all
task build:all
```
+`Makefile` のショートカット:
+
+| コマンド | 説明 |
+| -------------- | ------------------------------------------ |
+| `make install` | pnpm と poetry の依存関係をインストール |
+| `make run` | poetry 経由で MeshChatX を実行 |
+| `make build` | フロントエンドをビルド |
+| `make lint` | eslint と ruff を実行 |
+| `make test` | フロントエンドとバックエンドのテスト |
+| `make clean` | ビルド成果物と node_modules を削除 |
+
+## バージョン管理
+
+このリポジトリの現在のバージョンは `4.4.0` です。
+
+- JavaScript / Electron のバージョンソースは `package.json`。
+- `meshchatx/src/version.py` は次で `package.json` と同期します:
+
+```bash
+pnpm run version:sync
+```
+
+リリースの一貫性のため、必要に応じて (`package.json`、`pyproject.toml`、`meshchatx/__init__.py`) のバージョンを揃えてください。
+
## セキュリティ
- [`SECURITY.md`](../SECURITY.md)
-- 組み込みの整合性チェックと HTTPS/WSS デフォルト設定
+- アプリ実行時の組み込み整合性チェックとデフォルトの HTTPS/WSS
- `.gitea/workflows/` の CI スキャンワークフロー
## 言語の追加
-ロケールの検出は自動です。新しい言語を追加するには JSON ファイル1つだけで済みます:
+ロケールは自動検出されます。新しい言語には JSON ファイル 1 つで足ります:
-1. `en.json` からテンプレートを生成:
+1. `en.json` から空のテンプレートを生成:
```bash
python scripts/generate_locale_template.py
```
-2. ファイル名を変更しロケールディレクトリに移動:
+全キーを空文字にした `locales.json` が書き出されます。
+
+2. 名前を変更してロケールディレクトリへ移動:
```bash
mv locales.json meshchatx/src/frontend/locales/xx.json
```
-3. ファイル先頭の `_languageName` にその言語の母語名を設定 (例: `"Espanol"`, `"Francais"`)。
+3. ファイル先頭の `_languageName` にその言語の母語名を設定(例: `"Espanol"`, `"Francais"`)。言語選択に表示されます。
4. 残りの値をすべて翻訳。
5. キーの整合性を確認: `pnpm test -- tests/frontend/i18n.test.js --run`
-他のコード変更は不要です。
+他のコード変更は不要です。アプリ・言語選択・テストはビルド時に `meshchatx/src/frontend/locales/` からロケールを読み込みます。
## クレジット
- [Liam Cottle](https://github.com/liamcottle) - オリジナル Reticulum MeshChat
-- [RFnexus](https://github.com/RFnexus) - JavaScript Micron パーサー
+- [RFnexus](https://github.com/RFnexus) - Micron パーサー(JavaScript)
- [markqvist](https://github.com/markqvist) - Reticulum, LXMF, LXST

diff --git a/lang/README.ru.md b/lang/README.ru.md
index da4d3774..a80aefc3 100644
--- a/lang/README.ru.md
+++ b/lang/README.ru.md
@@ -1,19 +1,27 @@
# Reticulum MeshChatX
+[English README](../README.md) | [Deutsch](README.de.md) | [Italiano](README.it.md) | [中文](README.zh.md) | [日本語](README.ja.md)
+
Существенно доработанный и функционально расширенный форк Reticulum MeshChat от Liam Cottle.
Этот проект независим от оригинального Reticulum MeshChat и не связан с ним.
+- Сайт: [meshchatx.com](https://meshchatx.com)
- Исходный код: [git.quad4.io/RNS-Things/MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)
+- Официальное зеркало: [github.com/Sudo-Ivan/MeshChatX](https://github.com/Sudo-Ivan/MeshChatX) — пока также используется для сборок Windows и macOS.
- Релизы: [git.quad4.io/RNS-Things/MeshChatX/releases](https://git.quad4.io/RNS-Things/MeshChatX/releases)
- Журнал изменений: [`CHANGELOG.md`](../CHANGELOG.md)
-- TODO: [`TODO.md`](../TODO.md)
-- [English README](../README.md) | [Deutsch](README.de.md) | [Italiano](README.it.md) | [中文](README.zh.md) | [日本語](README.ja.md)
+- TODO: [Boards](https://git.quad4.io/RNS-Things/MeshChatX/projects)
-## Важные замечания
+## Важные отличия от Reticulum MeshChat
-- Полная поддержка LXMF является ключевым направлением проекта.
-- Хранение данных и миграции постепенно переводятся на прямой SQL (замена устаревших путей Peewee ORM).
+- Используется LXST
+- Peewee ORM заменён на прямой SQL
+- Axios заменён на нативный `fetch`
+- Актуальный Electron
+- Колёса `.whl` с веб-сервером и встроенным фронтендом для разных сценариев развёртывания
+- i18n
+- PNPM и Poetry для зависимостей
> [!WARNING]
> MeshChatX не гарантирует совместимость данных со старыми версиями Reticulum MeshChat. Сделайте резервную копию перед миграцией или тестированием.
@@ -21,17 +29,6 @@
> [!WARNING]
> Устаревшие системы пока не полностью поддерживаются. Текущие требования: Python `>=3.11` и Node `>=24`.
-## Демо и скриншоты
-
-<video src="https://strg.0rbitzer0.net/raw/62926a2a-0a9a-4f44-a5f6-000dd60deac1.mp4" controls="controls" style="max-width: 100%;"></video>
-
-### Интерфейс
-
-![Телефон](../screenshots/phone.png)
-![Визуализатор сети](../screenshots/network-visualiser.png)
-![Архивы](../screenshots/archives.png)
-![Идентичности](../screenshots/identities.png)
-
## Требования
- Python `>=3.11` (из `pyproject.toml`)
@@ -39,9 +36,18 @@
- pnpm `10.32.1` (из `package.json`)
- Poetry (используется в `Taskfile.yml` и CI)
+```bash
+task install
+task lint:all
+task test:all
+task build:all
+```
+
## Способы установки
-| Метод | Включает фронтенд | Архитектуры | Лучше всего подходит для |
+Выберите способ в соответствии со средой и форматом пакета.
+
+| Метод | Включает фронтенд | Архитектуры | Лучше всего для |
| --------------------- | ------------------- | ---------------------------------------- | ------------------------------------- |
| Docker-образ | Да | `linux/amd64`, `linux/arm64` | Быстрый запуск на серверах Linux |
| Python wheel (`.whl`) | Да | Любая архитектура, поддерживаемая Python | Безголовый/веб-сервер без сборки Node |
@@ -52,8 +58,8 @@
Примечания:
-- CI явно собирает Linux `x64` и `arm64` AppImage + DEB.
-- RPM также создается при сборке релиза и загружается, если успешно.
+- Релизный workflow явно собирает Linux `x64` и `arm64` AppImage + DEB.
+- RPM также собирается при попытке и загружается при успехе.
## Быстрый старт: Docker
@@ -64,7 +70,7 @@ docker compose up -d
Compose-файл по умолчанию:
- `127.0.0.1:8000` на хосте -> порт `8000` контейнера
-- `./meshchat-config` -> `/config` для хранения данных
+- `./meshchat-config` -> `/config` для данных
Если возникают ошибки прав доступа:
@@ -104,11 +110,11 @@ sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
### 4) Python wheel (`.whl`)
-Wheel-пакеты из релизов включают собранный фронтенд.
+В релизных wheel включены собранные веб-ресурсы.
```bash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
-meshchat --headless
+meshchatx --headless
```
`pipx` также поддерживается:
@@ -119,6 +125,8 @@ pipx install ./reticulum_meshchatx-*-py3-none-any.whl
## Запуск из исходников (режим веб-сервера)
+Для разработки или локальной сборки.
+
```bash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
cd MeshChatX
@@ -127,18 +135,20 @@ pnpm install
pip install poetry
poetry install
pnpm run build-frontend
-poetry run meshchat --headless --host 127.0.0.1
+poetry run meshchatx --headless --host 127.0.0.1
```
## Запуск в песочнице (Linux)
-Чтобы запускать нативный бинарник `meshchat` с дополнительной изоляцией файловой системы, можно использовать **Firejail** или **Bubblewrap** (`bwrap`), сохраняя обычный сетевой доступ для Reticulum и веб-интерфейса. Полные примеры (pip/pipx, Poetry, заметки про USB-serial) в:
+Чтобы запускать нативный `meshchatx` (псевдоним: `meshchat`) с дополнительной изоляцией файловой системы, можно использовать **Firejail** или **Bubblewrap** (`bwrap`), сохраняя обычный сетевой доступ для Reticulum и веб-интерфейса. Полные примеры (pip/pipx, Poetry, USB-serial) в:
- [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)
-Та же страница отображается во встроенном разделе **Документация** (документация MeshChatX), когда она отдаётся из входящих в сборку или синхронизируемых файлов `meshchatx-docs`.
+Та же страница отображается во встроенной **Документации** (документация MeshChatX), когда она отдаётся из `meshchatx-docs`.
+
+## Сборка настольных пакетов из исходников
-## Сборка пакетов из исходников
+Скрипты заданы в `package.json` и `Taskfile.yml`.
### Linux x64 AppImage + DEB
@@ -158,14 +168,20 @@ pnpm run dist:linux-arm64
pnpm run dist:rpm
```
+Через Task:
+
+```bash
+task dist:fe:rpm
+```
+
## Поддержка архитектур
- Docker: `amd64`, `arm64`
- Linux AppImage: `x64`, `arm64`
- Linux DEB: `x64`, `arm64`
-- Windows: `x64`, `arm64` (скрипты сборки доступны)
-- macOS: скрипты сборки доступны (`arm64`, `universal`)
-- Android: проект и CI-воркфлоу присутствуют в репозитории
+- Windows: `x64`, `arm64` (скрипты сборки есть)
+- macOS: скрипты сборки (`arm64`, `universal`) для локальных сред
+- Android: проект и CI в репозитории
## Android
@@ -174,25 +190,28 @@ pnpm run dist:rpm
## Конфигурация
-| Аргумент | Переменная окружения | По умолчанию | Описание |
-| --------------- | ---------------------- | ------------ | ---------------------------------- |
-| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Адрес привязки веб-сервера |
-| `--port` | `MESHCHAT_PORT` | `8000` | Порт веб-сервера |
-| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | Отключить HTTPS |
-| `--headless` | `MESHCHAT_HEADLESS` | `false` | Не открывать браузер автоматически |
-| `--auth` | `MESHCHAT_AUTH` | `false` | Включить базовую аутентификацию |
-| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Директория данных |
-| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | авто | Директория фронтенд-файлов |
+| Аргумент | Переменная окружения | По умолчанию | Описание |
+| -------------------------- | ---------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
+| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Адрес привязки веб-сервера |
+| `--port` | `MESHCHAT_PORT` | `8000` | Порт веб-сервера |
+| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | Отключить HTTPS |
+| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (нет) | Пути к PEM-сертификату и ключу; задаются вместе. Переопределяют автосгенерированные сертификаты в каталоге `ssl/` у идентичности. |
+| `--headless` | `MESHCHAT_HEADLESS` | `false` | Не открывать браузер автоматически |
+| `--auth` | `MESHCHAT_AUTH` | `false` | Базовая аутентификация |
+| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Каталог данных |
+| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | авто/bundled | Каталог фронтенда (для установок без встроенных ресурсов) |
## Ветки
| Ветка | Назначение |
| -------- | ------------------------------------------------------------------------- |
-| `master` | Стабильные релизы. Только готовый к продакшену код. |
-| `dev` | Активная разработка. Может содержать нестабильные или неполные изменения. |
+| `master` | Стабильные релизы. Только код для продакшена. |
+| `dev` | Активная разработка. Возможны нестабильные или неполные изменения. |
## Разработка
+Типичные задачи из `Taskfile.yml`:
+
```bash
task install
task lint:all
@@ -200,38 +219,64 @@ task test:all
task build:all
```
+Сокращения `Makefile`:
+
+| Команда | Описание |
+| -------------- | ------------------------------------------ |
+| `make install` | Установить зависимости pnpm и poetry |
+| `make run` | Запуск MeshChatX через poetry |
+| `make build` | Сборка фронтенда |
+| `make lint` | eslint и ruff |
+| `make test` | Тесты фронтенда и бэкенда |
+| `make clean` | Удалить артефакты сборки и node_modules |
+
+## Версионирование
+
+Текущая версия в репозитории: `4.4.0`.
+
+- Источник версии JS/Electron — `package.json`.
+- `meshchatx/src/version.py` синхронизируется из `package.json`:
+
+```bash
+pnpm run version:sync
+```
+
+Для согласованных релизов выравнивайте поля версий где нужно (`package.json`, `pyproject.toml`, `meshchatx/__init__.py`).
+
## Безопасность
- [`SECURITY.md`](../SECURITY.md)
-- Встроенные проверки целостности и HTTPS/WSS по умолчанию
+- Встроенные проверки целостности и HTTPS/WSS по умолчанию в приложении
- CI-сканирование в `.gitea/workflows/`
## Добавление языка
-Обнаружение локалей происходит автоматически. Для добавления нового языка достаточно одного JSON-файла:
+Локали обнаруживаются автоматически. Достаточно одного JSON-файла:
-1. Сгенерировать шаблон из `en.json`:
+1. Сгенерировать пустой шаблон из `en.json`:
```bash
python scripts/generate_locale_template.py
```
-2. Переименовать и переместить в каталог локалей:
+Создаётся `locales.json` со всеми ключами и пустыми строками.
+
+2. Переименовать и переместить:
```bash
mv locales.json meshchatx/src/frontend/locales/xx.json
```
-3. Установить `_languageName` в начале файла на название языка на этом языке (например `"Espanol"`, `"Francais"`).
+3. В начале файла задать `_languageName` — нативное имя языка (например `"Espanol"`, `"Francais"`). Отображается в выборе языка.
-4. Перевести все остальные значения.
+4. Перевести остальные значения.
-5. Проверить соответствие ключей: `pnpm test -- tests/frontend/i18n.test.js --run`
+5. Проверить ключи: `pnpm test -- tests/frontend/i18n.test.js --run`
-Никаких других изменений кода не требуется.
+Других изменений кода не требуется. Приложение, селектор языка и тесты используют `meshchatx/src/frontend/locales/` на этапе сборки.
## Авторы
-- [Liam Cottle](https://github.com/liamcottle) - Оригинальный Reticulum MeshChat
-- [RFnexus](https://github.com/RFnexus) - JavaScript-реализация Micron-парсера
-- [markqvist](https://github.com/markqvist) - Reticulum, LXMF, LXST
+- [Liam Cottle](https://github.com/liamcottle) — оригинальный Reticulum MeshChat
+- [RFnexus](https://github.com/RFnexus) — парсер Micron (JavaScript)
+- [markqvist](https://github.com/markqvist) — Reticulum, LXMF, LXST

diff --git a/lang/README.zh.md b/lang/README.zh.md
index edc44d10..8e42dee0 100644
--- a/lang/README.zh.md
+++ b/lang/README.zh.md
@@ -1,19 +1,27 @@
# Reticulum MeshChatX
+[English README](../README.md) | [Deutsch](README.de.md) | [Italiano](README.it.md) | [Русский](README.ru.md) | [日本語](README.ja.md)
+
Liam Cottle 开发的 Reticulum MeshChat 的一个功能丰富的深度修改分支。
本项目独立于原始 Reticulum MeshChat 项目,与其无关联。
+- 网站: [meshchatx.com](https://meshchatx.com)
- 源码: [git.quad4.io/RNS-Things/MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)
+- 官方镜像: [github.com/Sudo-Ivan/MeshChatX](https://github.com/Sudo-Ivan/MeshChatX) — 目前亦用于 Windows 与 macOS 构建。
- 发行版: [git.quad4.io/RNS-Things/MeshChatX/releases](https://git.quad4.io/RNS-Things/MeshChatX/releases)
- 变更日志: [`CHANGELOG.md`](../CHANGELOG.md)
-- TODO: [`TODO.md`](../TODO.md)
-- [English README](../README.md) | [Deutsch](README.de.md) | [Italiano](README.it.md) | [Русский](README.ru.md) | [日本語](README.ja.md)
+- TODO: [Boards](https://git.quad4.io/RNS-Things/MeshChatX/projects)
-## 重要说明
+## 与 Reticulum MeshChat 的重要差异
-- 完整的 LXMF 支持是本项目的核心目标。
-- 数据存储和迁移正逐步转向原生 SQL(替换旧的 Peewee ORM 路径)。
+- 使用 LXST
+- 以原生 SQL 替代 Peewee ORM
+- 以原生 `fetch` 替代 Axios
+- 使用最新 Electron
+- `.whl` 内置 Web 服务器与前端资源,便于多种部署方式
+- i18n
+- 使用 PNPM 与 Poetry 管理依赖
> [!WARNING]
> MeshChatX 不保证与旧版 Reticulum MeshChat 的数据兼容。迁移或测试前请备份数据。
@@ -21,26 +29,24 @@ Liam Cottle 开发的 Reticulum MeshChat 的一个功能丰富的深度修改分
> [!WARNING]
> 旧系统尚未完全支持。当前最低要求:Python `>=3.11`,Node `>=24`。
-## 演示和截图
-
-<video src="https://strg.0rbitzer0.net/raw/62926a2a-0a9a-4f44-a5f6-000dd60deac1.mp4" controls="controls" style="max-width: 100%;"></video>
-
-### 界面预览
-
-![电话](../screenshots/phone.png)
-![网络可视化](../screenshots/network-visualiser.png)
-![存档](../screenshots/archives.png)
-![身份管理](../screenshots/identities.png)
-
## 系统要求
- Python `>=3.11`(来自 `pyproject.toml`)
- Node.js `>=24`(来自 `package.json`)
- pnpm `10.32.1`(来自 `package.json`)
-- Poetry(用于 `Taskfile.yml` 和 CI 工作流)
+- Poetry(用于 `Taskfile.yml` 与 CI 工作流)
+
+```bash
+task install
+task lint:all
+task test:all
+task build:all
+```
## 安装方式
+请按运行环境与打包形式选择。
+
| 方式 | 包含前端 | 架构 | 适用场景 |
| --------------------- | -------- | ---------------------------- | ----------------------------------- |
| Docker 镜像 | 是 | `linux/amd64`, `linux/arm64` | Linux 服务器快速部署 |
@@ -48,12 +54,12 @@ Liam Cottle 开发的 Reticulum MeshChat 的一个功能丰富的深度修改分
| Linux AppImage | 是 | `x64`, `arm64` | 便携式桌面使用 |
| Debian 包 (`.deb`) | 是 | `x64`, `arm64` | Debian/Ubuntu 安装 |
| RPM 包 (`.rpm`) | 是 | 取决于 CI | Fedora/RHEL/openSUSE |
-| 从源码 | 本地构建 | 主机架构 | 开发和自定义构建 |
+| 从源码 | 本地构建 | 主机架构 | 开发与自定义构建 |
说明:
-- 发布工作流明确构建 Linux `x64` 和 `arm64` AppImage + DEB。
-- RPM 也会尝试构建,成功时上传。
+- 发布工作流明确构建 Linux `x64` 与 `arm64` 的 AppImage + DEB。
+- RPM 亦会尝试构建,成功时上传。
## 快速开始: Docker
@@ -64,7 +70,7 @@ docker compose up -d
默认 compose 文件映射:
- 主机 `127.0.0.1:8000` -> 容器端口 `8000`
-- `./meshchat-config` -> `/config` 持久化存储
+- `./meshchat-config` -> `/config` 持久化
如遇权限问题:
@@ -95,7 +101,7 @@ sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
### 3) RPM 系统
-1. 下载 `ReticulumMeshChatX-v<版本>-linux-<架构>.rpm`(如发行版中存在)。
+1. 若发行版中存在,下载 `ReticulumMeshChatX-v<版本>-linux-<架构>.rpm`。
2. 安装:
```bash
@@ -108,10 +114,10 @@ sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
```bash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
-meshchat --headless
+meshchatx --headless
```
-也支持 `pipx`:
+亦支持 `pipx`:
```bash
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
@@ -119,6 +125,8 @@ pipx install ./reticulum_meshchatx-*-py3-none-any.whl
## 从源码运行(Web 服务器模式)
+在开发或需要本地定制构建时使用。
+
```bash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
cd MeshChatX
@@ -127,19 +135,21 @@ pnpm install
pip install poetry
poetry install
pnpm run build-frontend
-poetry run meshchat --headless --host 127.0.0.1
+poetry run meshchatx --headless --host 127.0.0.1
```
## 在沙盒中运行(Linux)
-若要在额外隔离文件系统的情况下运行原生 `meshchat` 可执行文件,可使用 **Firejail** 或 **Bubblewrap**(`bwrap`),同时保留 Reticulum 与 Web 界面所需的正常网络访问。完整示例(pip/pipx、Poetry、USB 串口说明)见:
+若要在额外隔离文件系统的情况下运行原生 `meshchatx`(别名:`meshchat`),可使用 **Firejail** 或 **Bubblewrap**(`bwrap`),同时保留 Reticulum 与 Web 界面所需的网络访问。完整示例(pip/pipx、Poetry、USB 串口说明)见:
- [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)
-应用内 **文档**(MeshChatX 文档)列表在提供已捆绑或已同步的 `meshchatx-docs` 文件时也会显示同一页面。
+在提供已捆绑或已同步的 `meshchatx-docs` 时,应用内 **文档**(MeshChatX 文档)列表亦会显示同一页面。
## 从源码构建桌面包
+脚本定义于 `package.json` 与 `Taskfile.yml`。
+
### Linux x64 AppImage + DEB
```bash
@@ -158,14 +168,20 @@ pnpm run dist:linux-arm64
pnpm run dist:rpm
```
+或通过 Task:
+
+```bash
+task dist:fe:rpm
+```
+
## 架构支持
- Docker: `amd64`, `arm64`
- Linux AppImage: `x64`, `arm64`
- Linux DEB: `x64`, `arm64`
-- Windows: `x64`, `arm64`(构建脚本可用)
-- macOS: 构建脚本可用(`arm64`, `universal`)
-- Android: 仓库中包含项目和 CI 工作流
+- Windows: `x64`, `arm64`(提供构建脚本)
+- macOS: 提供构建脚本(`arm64`、`universal`),适用于本地构建环境
+- Android: 仓库内含项目与 CI 工作流
## Android
@@ -174,15 +190,16 @@ pnpm run dist:rpm
## 配置
-| 参数 | 环境变量 | 默认值 | 说明 |
-| --------------- | ---------------------- | ----------- | ------------------ |
-| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Web 服务器绑定地址 |
-| `--port` | `MESHCHAT_PORT` | `8000` | Web 服务器端口 |
-| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | 禁用 HTTPS |
-| `--headless` | `MESHCHAT_HEADLESS` | `false` | 不自动打开浏览器 |
-| `--auth` | `MESHCHAT_AUTH` | `false` | 启用基本认证 |
-| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | 数据目录 |
-| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | 自动 | 前端文件目录 |
+| 参数 | 环境变量 | 默认值 | 说明 |
+| -------------------------- | ---------------------------------------- | ------------ | -------------------------------------------------------------------------------------------- |
+| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Web 服务器绑定地址 |
+| `--port` | `MESHCHAT_PORT` | `8000` | Web 服务器端口 |
+| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | 禁用 HTTPS |
+| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (无) | PEM 证书与私钥路径;需同时设置。覆盖身份下 `ssl/` 目录中自动生成的证书。 |
+| `--headless` | `MESHCHAT_HEADLESS` | `false` | 不自动打开浏览器 |
+| `--auth` | `MESHCHAT_AUTH` | `false` | 启用基本认证 |
+| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | 数据目录 |
+| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | 自动/捆绑 | 前端文件目录(无捆绑资源安装时需要) |
## 分支
@@ -193,6 +210,8 @@ pnpm run dist:rpm
## 开发
+`Taskfile.yml` 中的常用任务:
+
```bash
task install
task lint:all
@@ -200,38 +219,64 @@ task test:all
task build:all
```
+`Makefile` 快捷方式:
+
+| 命令 | 说明 |
+| -------------- | ---------------------------- |
+| `make install` | 安装 pnpm 与 poetry 依赖 |
+| `make run` | 通过 poetry 运行 MeshChatX |
+| `make build` | 构建前端 |
+| `make lint` | 运行 eslint 与 ruff |
+| `make test` | 运行前端与后端测试 |
+| `make clean` | 移除构建产物与 node_modules |
+
+## 版本
+
+本仓库当前版本: `4.4.0`。
+
+- JavaScript/Electron 版本以 `package.json` 为准。
+- `meshchatx/src/version.py` 通过以下命令与 `package.json` 同步:
+
+```bash
+pnpm run version:sync
+```
+
+发布时请保持相关字段一致(`package.json`、`pyproject.toml`、`meshchatx/__init__.py`)。
+
## 安全
- [`SECURITY.md`](../SECURITY.md)
-- 内置完整性检查和 HTTPS/WSS 默认设置
+- 应用内置完整性检查与默认 HTTPS/WSS
- `.gitea/workflows/` 中的 CI 扫描工作流
## 添加语言
-语言发现是自动的。添加新语言只需一个 JSON 文件:
+语言由目录自动发现。添加新语言只需一个 JSON 文件:
-1. 从 `en.json` 生成模板:
+1. 从 `en.json` 生成空白模板:
```bash
python scripts/generate_locale_template.py
```
-2. 重命名并移动到语言目录:
+将写入 `locales.json`,所有键值为空字符串。
+
+2. 重命名并移入语言目录:
```bash
mv locales.json meshchatx/src/frontend/locales/xx.json
```
-3. 将文件顶部的 `_languageName` 设置为该语言的母语名称 (例如 `"Espanol"`, `"Francais"`)。
+3. 在文件顶部设置 `_languageName` 为该语言的母语名称(例如 `"Espanol"`、`"Francais"`)。将显示在语言选择器中。
-4. 翻译所有其他值。
+4. 翻译其余全部值。
-5. 验证键一致性: `pnpm test -- tests/frontend/i18n.test.js --run`
+5. 校验键一致性: `pnpm test -- tests/frontend/i18n.test.js --run`
-无需其他代码更改。
+无需其他代码更改。应用、语言选择与测试在构建时从 `meshchatx/src/frontend/locales/` 发现语言文件。
## 致谢
- [Liam Cottle](https://github.com/liamcottle) - 原始 Reticulum MeshChat
-- [RFnexus](https://github.com/RFnexus) - JavaScript Micron 解析器
+- [RFnexus](https://github.com/RFnexus) - Micron 解析器(JavaScript)
- [markqvist](https://github.com/markqvist) - Reticulum, LXMF, LXST

diff --git a/meshchatx/src/frontend/public/meshchatx-docs/meshchatx_linux_sandbox.md b/meshchatx/src/frontend/public/meshchatx-docs/meshchatx_linux_sandbox.md
index 89bc54bb..fc30cdfe 100644
--- a/meshchatx/src/frontend/public/meshchatx-docs/meshchatx_linux_sandbox.md
+++ b/meshchatx/src/frontend/public/meshchatx-docs/meshchatx_linux_sandbox.md
@@ -1,10 +1,10 @@
# MeshChatX on Linux: Firejail and Bubblewrap
-This page shows how to run `meshchat` under **Firejail** or **Bubblewrap** (`bwrap`) on Linux. Use this when you install MeshChatX natively (wheel, package, or Poetry) and want an extra layer of filesystem and process isolation compared to running the binary directly.
+This page shows how to run **`meshchatx`** under **Firejail** or **Bubblewrap** (`bwrap`) on Linux. The legacy CLI name **`meshchat`** installs the same entry point and can be substituted in these examples. Use this when you install MeshChatX natively (wheel, package, or Poetry) and want an extra layer of filesystem and process isolation compared to running the binary directly.
These tools do **not** replace a full virtual machine or hardware-enforced boundary. They reduce exposure of your home directory and other paths the process can write to, when you configure them with tight whitelists or bind mounts.
-**Containers:** If you already run MeshChatX with Docker or Podman, that is a different isolation model; this document is aimed at **host-installed** `meshchat`.
+**Containers:** If you already run MeshChatX with Docker or Podman, that is a different isolation model; this document is aimed at **host-installed** `meshchatx` (or `meshchat`).
## Prerequisites
@@ -13,7 +13,7 @@ Install one or both from your distribution:
- **Firejail:** package name is usually `firejail`.
- **Bubblewrap:** package name is usually `bubblewrap`; the binary is `bwrap`.
-You need a working `meshchat` on your `PATH` (for example after `pipx install`, `pip install --user`, or a distro package).
+You need a working **`meshchatx`** on your `PATH` (for example after `pipx install`, `pip install --user`, or a distro package). The **`meshchat`** command is the same binary if both entry points are installed.
Pick a **dedicated data directory** for sandboxed runs so you do not mix permissions or policies with a non-sandboxed install. The examples below use:
@@ -31,7 +31,7 @@ Firejail applies a profile (or defaults) on top of your command. For MeshChatX y
- **Network** left available so Reticulum and the web UI can work (do not use `--net=none` unless you know you need it).
- **Writable** only your chosen data directory (and anything else the app truly needs).
-### Installed `meshchat` (pip, pipx, or system package)
+### Installed `meshchatx` (pip, pipx, or system package)
```bash
DATA="${XDG_DATA_HOME:-$HOME/.local/share}/meshchatx-sandbox"
@@ -39,7 +39,7 @@ mkdir -p "$DATA/storage" "$DATA/.reticulum"
firejail --quiet \
--whitelist="$DATA" \
- meshchat --headless --host 127.0.0.1 \
+ meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
@@ -48,7 +48,7 @@ If the default profile blocks something MeshChatX needs, you can start from a lo
```bash
firejail --noprofile --whitelist="$DATA" \
- meshchat --headless --host 127.0.0.1 \
+ meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
@@ -69,7 +69,7 @@ firejail --quiet \
--whitelist="$(pwd)" \
--whitelist="$VENV" \
--whitelist="$DATA" \
- poetry run meshchat --headless --host 127.0.0.1 \
+ poetry run meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
@@ -91,7 +91,7 @@ Use the device nodes your system actually exposes (`dmesg`, `ls /dev/tty*`).
Bubblewrap does not ship profiles; you list every mount and option. The pattern below keeps the **whole root filesystem read-only**, mounts a **writable tmpfs** on `/tmp`, and makes **only** your data directory writable at its normal path. **Network namespaces are not changed**, so Reticulum and TCP/UDP behave like an unsandboxed process unless you add `--unshare-net` (which usually breaks mesh networking).
-### Installed `meshchat`
+### Installed `meshchatx`
```bash
DATA="${XDG_DATA_HOME:-$HOME/.local/share}/meshchatx-sandbox"
@@ -106,14 +106,14 @@ exec bwrap \
--tmpfs /tmp \
--bind "$DATA" "$DATA" \
--uid "$(id -u)" --gid "$(id -g)" \
- meshchat --headless --host 127.0.0.1 \
+ meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
Notes:
-- If `meshchat` lives only inside a venv that is **not** under `$DATA`, the read-only root still allows **reading** that path; you do not have to bind-mount the venv separately unless you also need writes there.
+- If `meshchatx` lives only inside a venv that is **not** under `$DATA`, the read-only root still allows **reading** that path; you do not have to bind-mount the venv separately unless you also need writes there.
- Distributions that merge `/` and `/usr` (merged-usr) still work with `--ro-bind / /` on typical glibc setups. If `bwrap` fails with missing library paths, add the extra `--ro-bind` lines your distro documents (for example `/lib64`).
### From source with Poetry
@@ -140,7 +140,7 @@ exec bwrap \
--uid "$(id -u)" --gid "$(id -g)" \
--setenv PATH "$VENV/bin:$PATH" \
--chdir "$PROJ" \
- poetry run meshchat --headless --host 127.0.0.1 \
+ poetry run meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
@@ -152,19 +152,13 @@ exec bwrap \
... same mounts as above ... \
--setenv PATH "$VENV/bin:$PATH" \
--chdir "$PROJ" \
- meshchat --headless --host 127.0.0.1 \
+ meshchatx --headless --host 127.0.0.1 \
--storage-dir="$DATA/storage" \
--reticulum-config-dir="$DATA/.reticulum"
```
-(Use the `meshchat` script or `python -m` entry point from `$VENV/bin` if your install exposes it there.)
+(Use the `meshchatx` script, the legacy `meshchat` alias, or `python -m` entry point from `$VENV/bin` if your install exposes it there.)
### USB serial under Bubblewrap
You may need a clearer view of devices than the minimal `--dev /dev` provides. Options include `--dev-bind /dev /dev` (broader device exposure) or binding only the specific character device. Balance convenience against attack surface.
-
-## See also
-
-- Other MeshChatX topics in this documentation set (in-app **Documentation** browser).
-- Repository root `README.md` (configuration table for CLI and environment variables).
-- Repository root `SECURITY.md` (vulnerability reporting and security notes).

diff --git a/meshchatx/src/frontend/public/meshchatx-docs/meshchatx_on_android_with_termux.md b/meshchatx/src/frontend/public/meshchatx-docs/meshchatx_on_android_with_termux.md
index f2a9a411..3a9ec4be 100644
--- a/meshchatx/src/frontend/public/meshchatx-docs/meshchatx_on_android_with_termux.md
+++ b/meshchatx/src/frontend/public/meshchatx-docs/meshchatx_on_android_with_termux.md
@@ -31,9 +31,11 @@ The wheel will automatically install all Python dependencies. Building `cryptogr
### Run MeshChatX
```
-meshchat
+meshchatx
```
+(`meshchat` is a compatibility alias for the same entry point.)
+
Then open your Android web browser and navigate to `http://localhost:8000`
## Method 2: Install from Source
@@ -75,9 +77,11 @@ pip install dist/*.whl
### Run MeshChatX
```
-meshchat
+meshchatx
```
+(`meshchat` is a compatibility alias for the same entry point.)
+
## Configuration Notes
> Note: The default `AutoInterface` may not work on your Android device. You will need to configure another interface such as `TCPClientInterface` in the settings.


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────